package com.fa4j.common.base.exception;

import com.fa4j.common.base.util.ModuleUtil;

/**
 * 错误类型接口
 */
public interface ErrorType {


    /**
     * 模块内部错误码,不操过3位
     */
    default Integer getInnerCode() {
        return 0;
    }

    /**
     * 错误编码
     * 错误码由 模块编码+模块内部错误码组成
     */
    default Integer getErrCode() {
        return ModuleUtil.getModule(this.getClass()).getCode() * 100 + getInnerCode();
    }

    /**
     * 错误信息
     */
    String getErrMsg();

    default String getErrMsgKey() {
        if (this.getClass().isEnum()) {
            String enumName = ((Enum<?>) this).name();
            return "error." + this.getClass().getSimpleName() + "." + enumName;
        }
        return null;
    }

}
